# 第02章 Maven基本用法

# 2.1 Maven安装

# 2.1.1 Maven软件的下载

为了使用Maven管理工具,我们首先要到官网去下载它的安装软件。通过百度搜索“Maven“如下:

1555832776857

1555832817256

点击Download链接,就可以直接进入到Maven软件的下载页面:

1555832863712

目前最新版是apache-maven-3.6.1版本,本文使用的是apache-maven-3.5.2版本。

Apache-maven-3.x下载地址:http://archive.apache.org/dist/maven/maven-3/

1555832980206

下载后的版本如下:

1555833009862

# 2.1.2 Maven软件的安装

Maven下载后,将Maven解压到一个没有中文没有空格的路径下,比如D:\software\maven下面。

解压后目录结构如下:

1555833044835

  • bin:存放了maven的命令,比如mvn tomcat:run;
  • boot:存放了一些maven本身的引导程序,如类加载器等;
  • conf:存放了maven的一些配置文件,如setting.xml文件;
  • lib:存放了maven本身运行所需的一些jar包;

至此我们的maven软件就可以使用了,前提是你的电脑上之前已经安装并配置好了JDK。

# 2.1.3 JDK的准备及统一

JDK使用JDK8版本

1555833115969

# 2.1.4 Maven及JDK配置

配置 MAVEN_HOME ,变量值就是你的maven安装 的路径(bin目录之前一级目录)

1555833172376

上面配置了我们的Maven软件,注意这个目录就是之前你解压maven的压缩文件包在的的目录,最好不要有中文和空格。

再次检查JDK的安装目录,如下图:

1555833208174

# 2.1.5 Maven软件版本测试

通过 mvn -v命令检查 maven是否安装成功,看到maven的版本为3.5.2及java版本为1.8即为安装成功。

找开cmd命令,输入mvn –v命令,如下图:

1555833236734

# 2.2 Maven仓库

# 2.2.1 Maven仓库的分类

maven的工作需要从仓库下载一些jar包,如下图所示,本地的项目A、项目B等都会通过maven软件从远程仓库(可以理解为互联网上的仓库)下载jar包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。

下图描述了maven中仓库的类型:

1555833441761

  • 本地仓库 :用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找;默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示windows用户目录;而Linux上的本地仓库地址为home/Dong/.m2/repository/

1555833501451

  • 远程仓库:如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内;

  • 中央仓库 :在maven软件中内置一个远程仓库地址http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由Maven团队自己维护,里面存储了非常全的jar包,它包含了世界上大部分流行的开源项目构件。

  • 私服:私服是一种特殊的远程仓库,它是架设在局域网的仓库服务,私服代理广域网上的远程仓库,供局域网使用;

1555833658891

私服的好处:

  • 节省资金的外网带宽,利用私服代理外部仓库之后,对外的重复构件下载便得以下手,降低外网带宽压力;
  • 加速Maven构建。不停地连接请求外部仓库是什么耗时的,但是maven的一些内部机制(如快照更新检查)要求Maven在执行构建的时候不停地检查远程仓库数据。因此,当项目配置了很多外部远程仓库的时候,构建速度会降低。使用私服解决这问题,因为Maven只需要检查局域网内私服的数据时,构建速度便提高;
  • 部署第三方构件,当某个构件无法从任何一个远程仓库获取怎么办?比如Oracle的JDBC驱动由于版权原因不能发布到公共仓库中。建立私服后,便可以将这些构件部署到这个内部仓库中,供内部Maven项目使用;
  • 提高稳定性,增强控制。对于远程仓库当外网不可用时,maven构建有可能因为依赖没有下载而不可行,私服后,即使没有网,如果该构件只有之前被其它人下载过就会存在私服上,此时我下时就可以不用连接外网直接就可以从私服上下载到。同时私服软件(nexus)还提供了额外的管理功能;
  • 降低中央仓库的负荷

# 2.2.2 Maven本地仓库的配置

将repository.rar(打包好的仓库)解压到电脑上,如D:\repository目录下:

1555833902982

在MAVE_HOME/conf/settings.xml文件中配置本地仓库位置(maven的安装目录下):

1555833924653

打开settings.xml文件,配置如下:

1555833951549

# 2.2.3 全局setting与用户setting

maven仓库地址、私服等配置信息需要在setting.xml文件中配置,分为全局配置和用户配置;

在maven安装目录下的有 conf/setting.xml文件,此setting.xml文件用于maven的所有project项目,它作为maven的全局配置;

如需要个性配置则需要在用户配置中设置,用户配置的setting.xml文件默认的位置在:${user.dir} /.m2/settings.xml目录中,${user.dir} 指windows 中的用户目录。

maven会先找用户配置,如果找到则以用户配置文件为准,否则使用全局配置文件。

1555834055936

# 2.3 Maven工程的认识

# 2.3.1 Maven工程的目录结构

1555834086190

作为一个maven工程,它的src目录和pom.xml是必备的。

进入src目录后,我们发现它里面的目录结构如下:

1555834156872

  • src/main/java —— 存放项目的.java文件
  • src/main/resources —— 存放项目资源文件,如spring, hibernate配置文件
  • src/test/java —— 存放所有单元测试.java文件,如JUnit测试类
  • src/test/resources —— 测试资源文件
  • target —— 项目输出位置,编译后的class文件会输出到此目录
  • pom.xml——maven项目核心配置文件

注意:如果是普通的java项目,那么就没有webapp目录。

# 2.3.2 Maven工程的运行

进入maven工程目录(当前目录有pom.xml文件),运行tomcat:run命令。

1555834201758

根据上边的提示信息,通过浏览器访问:http://localhost:8080/maven-helloworld/

1555834226167

# 2.3.3 问题处理

如果本地仓库配置错误会报下边的错误

1555834245431

分析:

maven工程运行先从本地仓库找jar包,本地仓库没有再从中央仓库找,上边提示downloading… 表示 从中央仓库下载jar,由于本地没有联网,报错。

解决:

在maven安装目录的conf/setting.xml文件中配置本地仓库。

Last Updated: 10/20/2019, 11:49:45 PM